1 Introducción

El siguiente documento corresponde al primer avance del trabajo de investigación del curso Visualización de datos y análisis estadístico del Posgrado Analista de Datos de la Universidad Cenfotec.

A continuación, se exponen el tema a tratar en esta investigación, los objetivos planteados, asi como una muestra del dataset que se empleara en dicha investigación.

2 Tema de investigación

“Estadisticas y Modelado de la distribución biogeográfica de Pumas y Jaguares de un sector del continente americano”

4 Objetivos

    1. Estadísticas espacio-temporales sobre los pumas y jaguares de un sector del continente americano, en las que se evalua: densidad por zonas y por pais, patrones de distribución dentro del area de estudio y frecuencia de observaciones por mes
    1. Analisis de interpolación de Krigging respecto del número de individuos observados por año
    1. Modelado de la distribución de los pumas y jaguares del área de estudio, según la máxima entropía con la cual se determina la probabilidad de condiciones adecuadas para la especie

5 Librerias

library(dplyr)
library(gapminder) #Obtencion de datos por pais
library(sp)
library(DT)
library(leaflet)
library(raster)
library(rgdal)
library(ggplot2)
library(plotly)
library(sf)
library(gpclib)
library(here)
library(rasterVis)
library(devtools)
library(proto)

6 Procesos de extracción, transformación y carga de las Bases de datos

En esta sección se realizan una serie de procesos que conllevan al desarrollo de las bases de datos finales.

6.1 1. Base de datos sobre felinos

df <- read.csv("E:/Analista de datos/DAT004/Proyecto Final/Datasets/samples/wildcats_df.csv", stringsAsFactors=F, sep=",", encoding="UTF-8")

colnames(df)
## [1] "X.U.FEFF.common_name" "scientific_name"      "latitude"            
## [4] "longitude"            "created_at"           "updated_at"          
## [7] "place_country_name"

6.1.1 Cambio de nombre de las columnas

names(df)[1] <- "Nombre_Comun"
names(df)[2] <- "Nombre_Cientifico"
names(df)[3] <- "Latitud"
names(df)[4] <- "Longitud"
names(df)[5] <- "Fecha_Creacion"
names(df)[6] <- "Fecha_Actualizacion"
names(df)[7] <- "Pais"

colnames(df)
## [1] "Nombre_Comun"        "Nombre_Cientifico"   "Latitud"            
## [4] "Longitud"            "Fecha_Creacion"      "Fecha_Actualizacion"
## [7] "Pais"

6.1.2 Resumen de datos por especie

6.1.2.1 Conteo inicial

df%>%
  group_by(Nombre_Comun)%>%
  summarise(length(Nombre_Comun))

6.1.2.2 Correccion de datos en la columna de “Nombre_Comun”

ndf <- df%>%
  mutate(Nombre_Comun=ifelse(Nombre_Comun=="Puma de América del Norte", "Puma",Nombre_Comun))%>%
  mutate(Nombre_Comun=ifelse(Nombre_Comun=="Puma de América del Sur", "Puma",Nombre_Comun))

6.1.2.3 Resumen final de datos por especie

ndf%>%
  group_by(Nombre_Comun)%>%
  summarise(length(Nombre_Comun))

6.1.3 Mapa de la distribicion de las especies a nivel mundial

cf <- colorFactor(c("#ffa500", "#13ED3F"), domain=ndf$Nombre_Comun)
m <- leaflet(df) %>% addTiles(group = "OSM (default)") %>%
  addProviderTiles(providers$Stamen.Toner, group = "Toner") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
  setView(-63.54105072, -8.88123188, zoom = 2) %>% 
  addCircles(~Longitud, ~Latitud, popup=ndf$Nombre_Comun, group = ndf$Nombre_Comun ,weight = 3, radius=4, 
              color=cf(ndf$Nombre_Comun), stroke = TRUE, fillOpacity = 0.5)  %>%
  addLegend("bottomright", colors= c("#ffa500", "#13ED3F"), labels=c("Puma", "Jaguar"), title="Especies") %>% 
  addLayersControl(
    baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
    overlayGroups = ndf$Nombre_Comun,
    options = layersControlOptions(collapsed = TRUE)
  )

m

6.2 2. Bases de datos sobre variables ambientales del área de estudio

El area de estudio con la que se pretende trabajar corresponde a Centro y Sudamrica, asi como el Caribe.

Algunas de las coberturas que se utilizan para conocer el habitat de las especies son variables climáticas que se derivan de los datos proporcionados por el Panel Intergubernamental sobre Cambio Climático y se produjeron utilizando Interpolación de basada en lecturas tomadas en estaciones meteorológicas de todo el mundo desde 1961 hasta 1990.

Los coverturas corresponden a:

*cld6190_ann : cobertura de nubes, anual

*dtr6190_ann : rango de temperatura diurna, anual

*frs6190_ann : frecuencia de heladas, anual

*pre6190_ann : precipitacion, anual

*pre6190_I1 : precipitacion, enero

*pre6190_I4 : precipitacion, abril

*pre6190_I7 : precipitacion, julio

*pre6190_I10 : precipitacion, octubre

*tmn6190_ann : temperatura promedio, anual

*tmp6190_ann : temperatura minima, anual

*tmx6190_ann : temperatura maxima, anual

*vap6190_ann : presion de vapor, anual

r_files <- list.files(here::here("Datasets", "coverages"),
                       full.names = T)
r_files
##  [1] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/cld6190_ann.asc"
##  [2] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/dtr6190_ann.asc"
##  [3] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/ecoreg.asc"     
##  [4] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/frs6190_ann.asc"
##  [5] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/h_dem.asc"      
##  [6] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/pre6190_ann.asc"
##  [7] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/pre6190_l1.asc" 
##  [8] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/pre6190_l10.asc"
##  [9] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/pre6190_l4.asc" 
## [10] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/pre6190_l7.asc" 
## [11] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/tmn6190_ann.asc"
## [12] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/tmp6190_ann.asc"
## [13] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/tmx6190_ann.asc"
## [14] "E:/Analista de datos/DAT004/Proyecto Final/Datasets/coverages/vap6190_ann.asc"
st <- stack(r_files) 

plot(st)

6.2.0.1 Muestra de una de las variables ambientales: Ecoregiones

ecoreg = raster(r_files[3])
plot(ecoreg, main="Ecoregiones del area de estudio")

hist(ecoreg, main="Histograma de las Ecoregiones del area de estudio", col="green")

6.2.0.2 Delimitacion del area de estudio

A continuacion, se carga el un archivo espacial de tipo vectorial correspondiente a los paises que conforman el area de estudio.

area_estudio_p <- sf::st_read(dsn="E:/Analista de datos/DAT004/Proyecto Final/Datasets/samples/area_estudio_p.shp", layer="area_estudio_p")
## Reading layer `area_estudio_p' from data source `E:\Analista de datos\DAT004\Proyecto Final\Datasets\samples\area_estudio_p.shp' using driver `ESRI Shapefile'
## Simple feature collection with 47 features and 3 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -109.4537 ymin: -59.47275 xmax: -26.23933 ymax: 23.68598
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs

Y procede a crear una visualizacion del mismo.

plot_geo(area_estudio_p, name=~pais)

6.3 3. Selección de la base de datos de las especies respecto del área de estudio

coords <- data.frame(x=ndf$Longitud, y=ndf$Latitud)
prj <- CRS("+proj=longlat +datum=WGS84 +no_defs")
points <- SpatialPointsDataFrame(coords, ndf, proj4string = prj)
wildcats <- crop(points,ecoreg)
wildcats <- data.frame(wildcats)
wildcats <- wildcats[,1:7]

6.3.1 Mapeo de los ubicaciones registradas de las especies en el área de estudio

cf2 <- colorFactor(c("#ffa500", "#13ED3F"), domain=wildcats$Nombre_Comun)
m2 <- leaflet(wildcats) %>% addTiles(group = "OSM (default)") %>%
  addProviderTiles(providers$Stamen.Toner, group = "Toner") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
  setView(-63.54105072, -8.88123188, zoom = 2) %>% 
  addCircles(~Longitud, ~Latitud, popup=wildcats$Nombre_Comun, group = wildcats$Nombre_Comun ,weight = 3, radius=4, 
              color=cf2(wildcats$Nombre_Comun), stroke = TRUE, fillOpacity = 0.5)  %>%
  addLegend("bottomright", colors= c("#ffa500", "#13ED3F"), labels=c("Puma", "Jaguar"), title="Especies") %>% 
  addLayersControl(
    baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
    overlayGroups = wildcats$Nombre_Comun,
    options = layersControlOptions(collapsed = TRUE)
  )

m2

6.3.2 Selección final de la base de datos

6.3.2.1 Inclusion de nuevas variables

fecha.c <- as.POSIXct(wildcats$Fecha_Creacion)
wildcats$M.C <- format(fecha.c, "%m") #Creacion de nueva columna de month desde la fecha de creacion
wildcats$Y.C <- format(fecha.c, "%Y") #Creacion de nueva columna de year desde la fecha de creacion
fecha.a <- as.POSIXct(wildcats$Fecha_Actualizacion)
wildcats$M.A <- format(fecha.a, "%m") #Creacion de nueva columna de month desde la fecha de actualizacion
wildcats$Y.A <- format(fecha.a, "%Y") #Creacion de nueva columna de year desde la fecha de actualizacion

wildcats <- wildcats[, colnames(wildcats)[c(1:4,7,5,8,9,6,10,11)]] #Reorganizacion de las columnas

6.3.2.2 Visualizacion de la base de datos

datatable(wildcats, filter = 'top', options = list(
  pageLength = 5, autoWidth = TRUE
))

7 Resultados

7.1 Estadísticas espacio-temporales sobre los pumas y jaguares de un sector del continente americano

7.1.1 Densidad de cada una de las especies

dn <- ggplot(wildcats, aes(x=Longitud, y=Latitud, text = paste("Pais:", Pais))) +
  stat_density2d(aes(fill = stat(level)), geom="polygon") +
  borders("world", xlim = c(-120, -30), ylim = c(-50, 25))+
  geom_point(data=filter(wildcats), shape = 21, colour = cf2(wildcats$Nombre_Comun), size = 0.5, alpha=0.3)+
  facet_grid(cols = vars(Nombre_Comun)) +
  scale_fill_viridis_c(option = "viridis") +
  theme(legend.position = "magma") +
  labs(title = "Densidad segun distribucion por especie")

ggplotly(dn)

7.1.2 Patron de distribucion

pd <- qplot(data = wildcats, x=Longitud, y=Latitud) +
  stat_ellipse(geom = "polygon", alpha = 1/2, aes(fill = Nombre_Comun))+
  borders("world", xlim = c(-120, -30), ylim = c(-50, 25))+
  geom_point(data=filter(wildcats), shape = 21, colour = cf2(wildcats$Nombre_Comun), size = 0.5, alpha=0.3)+
  facet_grid(cols = vars(Nombre_Comun)) +
  labs(title = "Patron de Distribucion de las Especies")

ggplotly(pd)

7.1.3 Distribucion de las especies observadas segun mes

e.m <- ggplot(wildcats, aes(x=Longitud, y=Latitud, frame=M.C, text = paste("Pais:", Pais))) +
  borders("world", xlim = c(-120, -30), ylim = c(-50, 25))+
  geom_point(data=filter(wildcats), shape = 21, colour = cf2(wildcats$Nombre_Comun), size = 1)+
  facet_grid(cols = vars(Nombre_Comun)) +
  labs(title = "Distribucion de las especies observadas segun mes")

ggplotly(e.m)%>% 
  animation_opts(
    2000, easing = "elastic", redraw = FALSE
  )%>%
  animation_slider(
    currentvalue = list(prefix = "Mes ", font = list(color="red"))
  )